home *** CD-ROM | disk | FTP | other *** search
/ Developer CD Series 1998 January: Mac OS SDK / Dev.CD Jan 98 SDK1.toast / Development Kits (Disc 1) / MacX25 / MacX25 Developer's Kit / MacX25_Interfaces / CIncludes / X25server.h < prev    next >
Encoding:
C/C++ Source or Header  |  1994-11-21  |  13.5 KB  |  472 lines  |  [TEXT/MPS ]

  1.  
  2.  
  3. /*************************************************************************
  4. **                                                                       *
  5. **     X25Server.h  Defines required for X25 server access                 *
  6. **                                                                       *
  7. **-----------------------------------------------------------------------*
  8. **                                                                       *
  9. **               Copyright Apple Computer, Inc. 1987-88                  *
  10. **                         All Rights Reserved                           *
  11. **                     Apple Computer Confidential                       *
  12. **                                                                       *
  13. **-----------------------------------------------------------------------*
  14. **                                                                       *
  15. **  Revision History:                                                    *
  16. **    1.0d1 - Reserved1 in X25Msg definition changed to X25Msg Version      *
  17. **  1.0d1 - Status and SubStatus definitions from listenagent.h added    * 
  18. **                                                                       * 
  19. **                                                                       *
  20. ** Thursday, September 20, 1990 2:02:27 PM                               *
  21. ** message codes and names added for interrupt handler, listener,        * 
  22. ** and listerer Agent to support the termination of the task by MacX25   *
  23. **                                                                       * 
  24. *************************************************************************/
  25.  
  26.  
  27. #include    "X25_System.h"
  28.  
  29.  
  30. /*
  31.  *    X.25 server MR-Dos message code definitions
  32.  */
  33.  
  34. #define LARequest            0x140    /* Listen Agent Request (x25 to LA)                        */
  35. #define LAReply                0x141    /* Listen Agent Reply (LA to x25)                        */
  36. #define Admin                0x142    /* X25 Services administration message                    */
  37. #define AckAdmin            0x143    /* Ack to administrative message                        */
  38. #define Diagnostic            0x144    /* Diagnostic message to Administrator                    */
  39. #define AckDiag                0x145    /* Ack to administrative Diagnostic message                */
  40. #define TerminateLA            0x150    /* Terminate Listener Agent                                */
  41. #define TerminateListener    0x152    /* Terminate Listener                                    */
  42. #define TerminateIH            0x154    /* Terminate Interrupt Handler                            */
  43.  
  44. /*
  45.  *    message code used by x25 to get entry points of the Interrupt Handler    
  46.  */
  47.  
  48. #define    GET_ENTRY_POINTS    0x102    /* message from x25 to Get entry points                    */
  49.  
  50.  
  51. /*
  52.  *    mStatus returned by the interrupt handler to X25    (if error)    
  53.  */
  54.  
  55. #define    BAD_DATA_POINTER    0x1
  56. #define    BAD_DATA_SIZE        0x2
  57.  
  58.  
  59. /*
  60.  *    X.25 Server MR-DOS message priority code definitions
  61.  */
  62.  
  63. #define NoPriority        0x0000    
  64. #define PriorityMsg        0x8000
  65.  
  66. /*
  67.  *    Lun number definitions
  68.  */
  69.  
  70. #define    UNKNOWNLUN        0xFF        /* lun number for unknown lun                             */
  71. #define SERVERLUN        0x00        /* server lun number                                     */
  72.  
  73.  
  74. /*
  75.  *    Name and Type definitions for X25 component modules
  76.  */
  77.  
  78. #define    ListenName        "Listener Agent"    /* Listen Agents Registered name                */
  79. #define    ListenType        "X.25"                /* Listen Agent's Registered Type                */
  80. #define X25NAME            "X25 Default"        /* X.25 server's registered name                 */
  81. #define X25TYPE            "X.25 Server"        /* X.25 server's type                             */
  82. #define X25LMSTYPE        "X25 LMS"            /* X.25 type for usable with LMS on motherboard    */
  83.  
  84. #define    ListenerName     "Listener"            /* Listener registered name                     */
  85. #define ListenerType    "X25Listener"        /* Listener registered type                     */
  86.  
  87. #define X25_INTNAME        "X25IntHandler"        /* Interrupt Handler registered name             */
  88. #define X25_INTTYPE        "Driver"            /* Interrupt Handler registered type             */
  89.  
  90.  
  91. /********************************************************************************************
  92.  *
  93.  *    The following structure and it's associated type and flag definitions
  94.  *    defines the format of an X25Msg.
  95.  *
  96.  *******************************************************************************************/
  97.  
  98. typedef struct {
  99.         
  100.     _X25_common_header    cmn_hdr;
  101.         char        Type;                /* Message Type                                        */
  102.         char        Version;            /* Version of X25Msg header                                */
  103.         short        LunNum;                /* Lun number                                        */
  104.         char        Flags;                /* Flag bits                                        */
  105.         char        LineNum;            /* X.25 Access link number                             */
  106.         char        Adaptor;            /* X.25 Adaptor Number                                */
  107.         char        Reserved1;            /* Reserved for future expansion                    */
  108.         short        PreProcessor;        /* X.25 Preprocessor                                */
  109.         short        Status;                /* The returned status code in response messages    */
  110.         short        SubStatus1;            /* Supplemental status codes                         */
  111.         short        SubStatus2;            /* more supplemental status codes                    */
  112.         long        Reserved2;            /* Reserved for future expansion                    */
  113.         long        Reserved3;            /* Reserved for future expansion                    */
  114.         char        Data[];                /* Beginning of user data area                        */
  115.             } X25Msg;
  116.             
  117. /* X25Msg Version number    */
  118.  
  119. #define Revision 01
  120.  
  121. /* X25Msg Adaptor numbers     */
  122.  
  123. #define X25Adaptor    0    /* X.25                             */
  124. #define    FRMAdaptor    2    /* Direct access to frame level        */
  125. #define    LMSAdaptor    4    /* LMS adaptor for bus interface    */
  126. #define    QLLCAdaptor    5    /* QLLC adaptor for SNA interface    */
  127.  
  128.  
  129. /* Flag bit definitions        */
  130.  
  131. #define Request        0x01                /* set if X25Msg is a request, clear if a response    */
  132.  
  133. /* Message type definitions */
  134.  
  135. #define    X25Packet        0x00
  136. #define PVCconnect        0x01
  137. #define    PVCdiscnct        0x02
  138. #define    Register        0x03
  139. #define    DeRegister        0x05
  140. #define    ConfigSys        0x06
  141. #define    ConfigLink        0x07
  142. #define ShutDown        0x08
  143. #define StartUp            0x09
  144. #define LinkStat        0x0A
  145. #define    GetIniTab        0x0B
  146. #define    GetStix            0x0C
  147. #define    GetAvailMem        0x0D
  148. #define    ICallRej        0x0E
  149.  
  150. /*    X25 Message Status Byte Definitions Used by module X25_if.c */
  151.  
  152. #define    NoError            0x00            /* Request processed without error                    */
  153. #define    NoAgent            0x11            /* No listener agent to register request with        */
  154. #define NoLun            0x12            /* User Lun cleared or never existed.                */
  155. #define FlowCntrl        0x13            /* Flow control violation                            */
  156. #define    LinkDown        0x16            /* X25 Access link is down                            */
  157. #define UnknownLink        0x17            /* Request received for Unassigned Access Link        */
  158.  
  159. /*     MR-DOS mStatus byte definitions        */
  160.  
  161. #define    UnknownX25Msg    0x10            /* Unknown Type code in X25Message Type field       */
  162. #define    UnknownmCode    0x11            /* Unknown code in MR-DOS mCOde field                */
  163. #define    UnknownPtype    0x12            /* Unknown packet type code in X25 Packet header    */
  164. #define DupVCID            0x13            /* Duplicate VCID on open request                    */
  165. #define NoCircuits        0x14            /* Exceeded number of allowed virtual circuits        */
  166. #define UnknownVCID        0x15            /* Unknown VCID in mOData[0] field of message          */
  167. #define NoLinkTable        0x16            /* Link table hasent been loaded prior to a start    */
  168. #define NoSysTable        0x17            /* System table hasent been loaded                    */
  169. #define NoMemory        0x18            /* Not enough memory to support configuration        */
  170. #define PoolError        0x19            /* Table contains to many buffer pool definitions   */
  171. #define PoolSize        0x20            /* Table contains a pool > 64K in size                */
  172. #define NoModem            0x21            /* No DCD or DSR modem signals                        */
  173. #define BadType            0x22            /* Admin message type                                */
  174. #define BadHdrLenght    0x23            /* X25Msg header to short to be valid                */
  175. #define BadDataSize        0x24            /* Zero length mDataSize in user or admin data        */
  176.  
  177.  
  178.  
  179. /*
  180.  *    Format of a Statistics Response Message
  181.  */
  182.  
  183.  
  184.  
  185. typedef struct LinkStix 
  186. {
  187.     X25Msg    link_header;
  188.     unsigned    short     frames_sent[32];
  189.     unsigned    short     frames_rcvd[32];
  190.     unsigned    short     aborted_frms_rcvd;
  191.     unsigned    short     aborted_frms_sent;
  192.     unsigned    short     bad_fcs_rcvd;
  193.     unsigned    short     ovrsize_rcvd;
  194.     unsigned    short     line_pkts_sent[32];
  195.     unsigned    short     line_pkts_rcvd[32];
  196. } LinkStix;
  197.  
  198.  
  199.  
  200.  
  201. typedef struct VCStix 
  202. {
  203.     X25Msg    link_header;
  204.     unsigned    short vc_packet_sent[32];
  205.     unsigned    short vc_packet_rcvd[32];
  206. } VCStix;
  207.     
  208.  
  209. enum frames_sent
  210. {
  211.     fr_snd_ignore = 0,
  212.     fr_snd_rr,
  213.     fr_snd_rnr,
  214.     fr_snd_rej,
  215.     fr_snd_info,
  216.     fr_snd_sabm,
  217.     fr_snd_dm,
  218.     fr_snd_disc,
  219.     fr_snd_ua,
  220.     fr_snd_frmr,
  221.     fr_snd_bad_nr,
  222.     fr_snd_unk,
  223.     fr_snd_xid,
  224.     fr_snd_badlength,
  225.     fr_snd_timeout,
  226.     fr_snd_l2up,
  227.     fr_snd_l2dn,
  228.     fr_snd_l1dn,
  229.     fr_snd_connect,
  230.     fr_snd_t4,
  231.     fr_snd_t4_n2,
  232.     fr_snd_reserved1,
  233.     fr_snd_reserved2,
  234.     fr_snd_reserved3,
  235.     fr_snd_reserved4,
  236.     fr_snd_reserved5,
  237.     fr_snd_reserved6,
  238.     fr_snd_reserved7,
  239.     fr_snd_reserved8,
  240.     fr_snd_reserved9,
  241.     fr_snd_reserved10,
  242.     fr_snd_reserved11,
  243. };    
  244.  
  245. enum frames_rcvd
  246. {
  247.     fr_rcv_ignore = 0,
  248.     fr_rcv_rr,
  249.     fr_rcv_rnr,
  250.     fr_rcv_rej,
  251.     fr_rcv_info,
  252.     fr_rcv_sabm,
  253.     fr_rcv_dm,
  254.     fr_rcv_disc,
  255.     fr_rcv_ua,
  256.     fr_rcv_frmr,
  257.     fr_rcv_bad_nr,
  258.     fr_rcv_unk,
  259.     fr_rcv_xid,
  260.     fr_rcv_badlength,
  261.     fr_rcv_timeout,
  262.     fr_rcv_l2up,
  263.     fr_rcv_l2dn,
  264.     fr_rcv_l1dn,
  265.     fr_rcv_connect,
  266.     fr_rcv_t4,
  267.     fr_rcv_t4_n2,
  268.     fr_rcv_reserved1,
  269.     fr_rcv_reserved2,
  270.     fr_rcv_reserved3,
  271.     fr_rcv_reserved4,
  272.     fr_rcv_reserved5,
  273.     fr_rcv_reserved6,
  274.     fr_rcv_reserved7,
  275.     fr_rcv_reserved8,
  276.     fr_rcv_reserved9,
  277.     fr_rcv_reserved10,
  278.     fr_rcv_reserved11,
  279. };    
  280.  
  281. enum line_pkts_sent
  282. {
  283.     pa_snd_data = 0,
  284.     pa_snd_rr,
  285.     pa_snd_rnr,
  286.     pa_snd_int,
  287.     pa_snd_cfint,
  288.     pa_snd_call,
  289.     pa_snd_cfcall,
  290.     pa_snd_clr,
  291.     pa_snd_cfclr,
  292.     pa_snd_res,
  293.     pa_snd_cfres,
  294.     pa_snd_diag,
  295.     pa_snd_reg,
  296.     pa_snd_cfreg,
  297.     pa_snd_rst,
  298.     pa_snd_cfrst,
  299.     pa_snd_error,
  300.     pa_snd_t20,
  301.     pa_snd_t21,
  302.     pa_snd_t22,
  303.     pa_snd_t23,
  304.     pa_snd_vccount,
  305.     pa_snd_t24,
  306.     pa_snd_t25,
  307.     pa_snd_t26,
  308.     pa_snd_t28,
  309.     pa_snd_reserved1,
  310.     pa_snd_reserved2,
  311.     pa_snd_reserved3,
  312.     pa_snd_reserved4,
  313.     pa_snd_reserved5,
  314.     pa_snd_reserved6,
  315. };
  316.  
  317.  
  318. enum line_pkts_rcvd
  319. {
  320.     pa_rcv_data = 0,
  321.     pa_rcv_rr,
  322.     pa_rcv_rnr,
  323.     pa_rcv_int,
  324.     pa_rcv_cfint,
  325.     pa_rcv_call,
  326.     pa_rcv_cfcall,
  327.     pa_rcv_clr,
  328.     pa_rcv_cfclr,
  329.     pa_rcv_res,
  330.     pa_rcv_cfres,
  331.     pa_rcv_diag,
  332.     pa_rcv_reg,
  333.     pa_rcv_cfreg,
  334.     pa_rcv_rst,
  335.     pa_rcv_cfrst,
  336.     pa_rcv_error,
  337.     pa_rcv_reserved1,
  338.     pa_rcv_reserved2,
  339.     pa_rcv_reserved3,
  340.     pa_rcv_reserved4,
  341.     pa_rcv_reserved5,
  342.     pa_rcv_reserved6,
  343.     pa_rcv_reserved7,
  344.     pa_rcv_reserved8,
  345.     pa_rcv_reserved9,
  346.     pa_rcv_reserved10,
  347.     pa_rcv_reserved11,
  348.     pa_rcv_reserved12,
  349.     pa_rcv_reserved13,
  350.     pa_rcv_reserved14,
  351.     pa_rcv_reserved15,
  352. };
  353.  
  354. enum vc_packet_sent
  355. {
  356.     vc_snd_data,
  357.     vc_snd_rr,
  358.     vc_snd_rnr,
  359.     vc_snd_int,
  360.     vc_snd_cfint,
  361.     vc_snd_res,
  362.     vc_snd_cfres,
  363.     vc_snd_t24,
  364.     vc_snd_t25,
  365.     vc_snd_t26,
  366. };
  367.  
  368. enum vc_packet_rcvd
  369. {
  370.     vc_rcv_data,
  371.     vc_rcv_rr,
  372.     vc_rcv_rnr,
  373.     vc_rcv_int,
  374.     vc_rcv_cfint,
  375.     vc_rcv_res,
  376.     vc_rcv_cfres,
  377. };    
  378.  
  379.  
  380.  
  381. /*
  382.  *    Format of LinkStat Response Message
  383.  */
  384.  
  385. typedef struct StatusMsg 
  386. {
  387.     X25Msg    link_header;
  388.     char    Levelone;
  389.     char    Leveltwo;
  390.     short    Circuits;
  391.     char    Modem;
  392.     char    Spare;
  393. }StatusMsg;
  394.  
  395.  
  396. /*    Link Status modem bit definitions.                                                         */
  397.  
  398. #define    DCDStatus        0x01    
  399. #define    CTSStatus        0x02
  400. #define    DSRStatus        0x04
  401. #define    RIStatus        0x08
  402.  
  403. /*    Link Status state definitions                                                            */
  404.  
  405. #define    L1Connect        0x01
  406. #define L1Setup            0x00
  407. #define    L1Disconnect    0xff
  408.  
  409. #define    L2Connect        0x01
  410. #define L2Setup            0x00
  411. #define    L2Disconnect    0xff
  412.   
  413.  
  414.  
  415. /*    Clear cause field definitions used when we manufacture a clear packet                   */
  416.  
  417. #define    LclError        0x13            /* Local procedure error                            */
  418.  
  419. /*  Some packet codes that were overlooked in the TITN definition files                        */
  420.  
  421. #define    P_RESET_CONF    0x1f
  422. #define    P_CLEAR_CONF    0x17
  423.  
  424.  
  425. /* The following codes were moved unchanged to this defn listing from listener.h               */
  426.  
  427. /* MR-DOS Error Codes for mStatus    */
  428.  
  429.  
  430. #define LA_Invalid_TYPE                100            /* invalid selector code                */
  431. #define LA_Invalid_PTR                101            /* invalid mDataPtr                        */
  432. #define LA_X25_SIZE_TOO_SMALL        102            /* x25 data area too small                */
  433. #define LA_DR_INVALID_SIZE            103            /* DeRegister data area size invalid    */
  434. #define LA_RU_SIZE_TOO_SMALL        104            /* Register User Data Area size small    */
  435. #define LA_NO_REQUEST_FLAG            105            /* Request Flag not set                    */
  436.  
  437. /* Primary Status codes are returned in the Status field of the X25Msg                    */
  438. /* If the returned code is other than noError then a secondary code is in SubStatus1    */
  439.  
  440. #define noError                        0            /* no Error found                        */
  441. #define noMatch                        10            /* no listen found to match call         */
  442. #define LA_EC_FormatError            9            /* Incorrect Listen Request Entry        */
  443. #define LA_EC_NoPrimaryCode            24            /* no primary selector found            */
  444. #define LA_DuplicateEntry            25            /* Duplicate Entry Found                */
  445.  
  446. /* Secondary Error codes are returned in the SubStatus1 field of the X25Msg                */
  447. /* if SubSTatus1 != 0, then SubStatus2  equals the offset in the listen request            */
  448. /* which failed                                                                         */
  449.  
  450. #define LA_EC_No_Error                0            /* Everything is OK                        */
  451. #define    LA_EC_CallingNSAP_Used        1            /* Calling NSAP address already used    */
  452. #define LA_EC_CalledNSAP_Used        2            /* Called NSAP address already used        */
  453. #define    LA_EC_DTE_SubAlreadyUsed    3            /* DTE sub address already used            */
  454. #define LA_EC_DTE_CallingUsed        4            /* DTE calling address already used        */
  455. #define    LA_EC_CUD_AlreadyUsed        5            /* Call User Data already used            */
  456. #define    LA_EC_CUG_AlreadyUsed        6            /* Closed User Group already used        */
  457. #define    LA_EC_ARC_AlreadyUsed        7            /* Accept Reverse Charging already used    */
  458. #define    LA_EC_AFS_AlreadyUsed        8            /* Accept Fast Select already Used        */
  459. #define LA_EC_BiCUG_AlreadyUsed        10            /* Bilateral closed user group already used */
  460. #define LA_EC_InvalidCode            20            /* invalid selector code                */
  461. #define    LA_Invalid_StringSize        21            /* string size too large                */
  462. #define    LA_Invalid_MaskSize            22            /* mask size too large                    */
  463. #define LA_StringNotMaskSize        23            /* mask not same size as string            */
  464. #define LA_EC_NoPrimaryCode            24            /* no primary selector found            */
  465. #define LA_DuplicateEntry            25            /* Duplicate Entry Found                */
  466. #define LA_InvalidMask                27            /* Mask not 0x0F for nibble match        */
  467. #define    LA_EC_CallingNSAP_Taken        28            /* Calling NSAP address already used    */
  468. #define LA_EC_CalledNSAP_Taken        29            /* Called NSAP address already used        */
  469. #define    LA_EC_DTE_SubAddressTaken    30            /* DTE sub address already used            */
  470. #define LA_EC_DTE_CallingTaken        31            /* DTE calling address already used        */
  471. #define    LA_EC_CUD_AlreadyTaken        32            /* Call User Data already used            */
  472.